/**
 * 文档智能摘要工具 - 通用JavaScript
 * 处理所有页面共享的功能
 */

// 等待DOM加载完成
document.addEventListener('DOMContentLoaded', function() {
    // 初始化语言切换功能
    initLanguageSwitcher();
    
    // 初始化主题切换功能
    initTheme();
});

/**
 * 初始化语言切换功能
 */
function initLanguageSwitcher() {
    // 获取所有语言选项
    const languageItems = document.querySelectorAll('[data-language]');
    
    // 为每个语言选项添加点击事件
    languageItems.forEach(item => {
        item.addEventListener('click', function(e) {
            e.preventDefault();
            const language = this.getAttribute('data-language');
            setLanguage(language);
        });
    });
}

/**
 * 设置语言
 * @param {string} language - 语言代码
 */
function setLanguage(language) {
    // 发送API请求设置语言
    fetch('/api/language', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({ language }),
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            // 刷新页面以应用新语言
            window.location.reload();
        } else {
            showError(data.error || '切换语言失败');
        }
    })
    .catch(error => {
        console.error('语言切换错误:', error);
        showError('切换语言时发生错误');
    });
}

/**
 * 初始化主题
 */
function initTheme() {
    // 获取当前主题
    const theme = document.body.getAttribute('data-theme') || 'light';
    
    // 应用主题
    applyTheme(theme);
}

/**
 * 应用主题
 * @param {string} theme - 主题名称 ('light' 或 'dark')
 */
function applyTheme(theme) {
    document.body.setAttribute('data-theme', theme);
    
    // 如果使用Bootstrap的暗色模式，可以添加或移除相应的类
    if (theme === 'dark') {
        document.body.classList.add('bg-dark', 'text-light');
        document.querySelectorAll('.card').forEach(card => {
            card.classList.add('bg-dark', 'text-light', 'border-secondary');
        });
        document.querySelectorAll('.table').forEach(table => {
            table.classList.add('table-dark');
        });
    } else {
        document.body.classList.remove('bg-dark', 'text-light');
        document.querySelectorAll('.card').forEach(card => {
            card.classList.remove('bg-dark', 'text-light', 'border-secondary');
        });
        document.querySelectorAll('.table').forEach(table => {
            table.classList.remove('table-dark');
        });
    }
}

/**
 * 显示错误消息
 * @param {string} message - 错误消息
 */
function showError(message) {
    const errorAlert = document.getElementById('errorAlert');
    const errorMessage = document.getElementById('errorMessage');
    
    if (errorAlert && errorMessage) {
        errorMessage.textContent = message;
        errorAlert.style.display = 'block';
        
        // 5秒后自动隐藏
        setTimeout(() => {
            errorAlert.style.display = 'none';
        }, 5000);
    } else {
        // 如果找不到错误提示元素，使用alert
        alert(message);
    }
}

/**
 * 显示成功消息（使用Toast）
 * @param {string} message - 成功消息
 */
function showSuccess(message) {
    const successToast = document.getElementById('successToast');
    const successMessage = document.getElementById('successMessage');
    
    if (successToast && successMessage) {
        successMessage.textContent = message;
        
        // 使用Bootstrap的Toast API显示提示
        const toast = new bootstrap.Toast(successToast);
        toast.show();
    }
}

/**
 * 格式化日期时间
 * @param {string} dateString - ISO格式的日期字符串
 * @returns {string} 格式化后的日期时间字符串
 */
function formatDateTime(dateString) {
    const date = new Date(dateString);
    return date.toLocaleString();
}

/**
 * 复制文本到剪贴板
 * @param {string} text - 要复制的文本
 * @returns {Promise<boolean>} 是否复制成功
 */
async function copyToClipboard(text) {
    try {
        if (navigator.clipboard) {
            await navigator.clipboard.writeText(text);
            return true;
        } else {
            // 兼容性处理
            const textarea = document.createElement('textarea');
            textarea.value = text;
            textarea.style.position = 'fixed';
            document.body.appendChild(textarea);
            textarea.focus();
            textarea.select();
            const successful = document.execCommand('copy');
            document.body.removeChild(textarea);
            return successful;
        }
    } catch (err) {
        console.error('复制到剪贴板失败:', err);
        return false;
    }
}

/**
 * 创建关键词标签元素
 * @param {string} keyword - 关键词
 * @returns {HTMLElement} 关键词标签元素
 */
function createKeywordBadge(keyword) {
    const badge = document.createElement('span');
    badge.className = 'badge bg-primary';
    badge.textContent = keyword;
    return badge;
}

/**
 * 截断文本
 * @param {string} text - 原始文本
 * @param {number} maxLength - 最大长度
 * @returns {string} 截断后的文本
 */
function truncateText(text, maxLength = 100) {
    if (text.length <= maxLength) {
        return text;
    }
    return text.substring(0, maxLength) + '...';
}